home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!zephyr.ens.tek.com!tekred!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v09i032: conquer4 - middle earth multi-player game (V4), Patch9
- Message-ID: <5276@tekred.CNA.TEK.COM>
- Date: 5 Mar 90 16:46:28 GMT
- Sender: news@tekred.CNA.TEK.COM
- Lines: 1971
- Approved: billr@saab.CNA.TEK.COM
-
- Submitted-by: Adam Bryant <adb@cs.bu.edu>
- Posting-number: Volume 9, Issue 32
- Archive-name: conquer4/Patch9
- Patch-To: conquer4: Volume 6, Issue 83-96
-
-
- [[Here is the latest and hopefully last patch to conquer version 4.
- [But, hey, didn't I say that with patch number 8?] Now, I hope
- I can finally get all my effort into version 5.
-
- Anyway, don't have to much time to say much about it, but in summary:
-
- - this patch enhances god powers and fixes a number of errors
- in god routines.
- - this patch takes care of a number of bug fixes, most especially
- the grouped troops bug.
- - this patch fixes a number of bugs with the trading code thanks
- to Charles C. Fu.
- - I believe that this is a much cleaner version than any of the
- proceeding ones... and the feel seems a bit better as well.
-
- Enjoy,
- adam]]
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of shell archive."
- # Contents: patches09
- # Wrapped by billr@saab on Mon Mar 5 08:47:55 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'patches09' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'patches09'\"
- else
- echo shar: Extracting \"'patches09'\" \(62540 characters\)
- sed "s/^X//" >'patches09' <<'END_OF_FILE'
- X*** opatchlevel.h Sat Mar 3 15:27:42 1990
- X--- patchlevel.h Sat Mar 3 15:27:52 1990
- X***************
- X*** 1 ****
- X! #define PATCHLEVEL 8
- X--- 1 ----
- X! #define PATCHLEVEL 9
- X*** onotes.v4 Sat Mar 3 15:27:42 1990
- X--- notes.v4 Sat Mar 3 15:27:52 1990
- X***************
- X*** 314,319 ****
- X--- 314,383 ----
- X defend mode this way; even when they had marched too far).
- X 255. allow recombination of troops with same status and same type
- X unless the type is TRADED or ON_BOARD.
- X+ ===4.0 patch number eight released => 4.8 ===============================
- X+ 256. made sure that minor leaders lived before becoming major leaders.
- X+ 257. fixed major bug on not resetting status of moved grouped unit.
- X+ 258. set a grouped movement to be equal to the movement of the leader.
- X+ 259. added missing return to commands.c (1341) [Paul Waterman]
- X+ 260. made sure only to ask for splitting warships when warships are there.
- X+ 261. no longer ask to split ships that are not in fleet.
- X+ 262. allow god to manipulate a fleet up for trade.
- X+ 263. fixed bug that -1 population may accidently be set by god.
- X+ 264. fixed bug that caused missetting of gold/jewel value by god.
- X+ 265. allow god to manipulate an army that is up for trade.
- X+ 266. added check to assure that navies do not carry invalid troops.
- X+ 267. added check for onboard armies to be sure they were actually on fleets.
- X+ 268. reformated the bottom of the display on the read message display.
- X+ 269. made sure that stones had the designation of '?' to allow them to work.
- X+ 270. increased reduction on movement in desert for DERVISH to avoid confusion.
- X+ 271. made sure that blank input would not be taken on redesignate owner.
- X+ 272. fiddled and diddled (sorry Johnny!) with the charity change check.
- X+ 273. fixed bug with providing movement to unmovable when having ROADS power.
- X+ 274. added ifdef's around srand declarations for ANSI compilers. [C. Fu]
- X+ 275. removed error message for people relocation. too common an occurance.
- X+ 276. allow naval battles along shore. [Charles C. Fu]
- X+ 277. prevent sailors or marines from retreating. [Charles C. Fu]
- X+ 278. redid the retreat code... made the test much simpler.
- X+ 279. slight adjustment to ONMAP macro [Charles C. Fu]
- X+ 280. keep random value of army sizes the same for when seen. [Charles C. Fu]
- X+ 281. keep random value of ship sizes the same when seen. [Charles C. Fu]
- X+ 282. keep random value of people in sector the same. [Charles C. Fu]
- X+ 283. do not allow navies to pass into impassible land [partial fix: C. Fu]
- X+ 284. make it harder to unload armies in enemy cities [Charles C. Fu]
- X+ 285. make it harder to load armies in enemy cities [Charles C. Fu]
- X+ 286. fixed mistype "P_ASOLD" => "P_ATYPE" npc.c [Charles C. Fu]
- X+ 287. check for division by zero with metals cost for troops
- X+ 288. make NPC pay metal for troops. [Charles C. Fu]
- X+ 289. have NPC nations adjust tax rates as appropriate. [Charles C. Fu]
- X+ 290. give rebel nations a tax rate of 10. [Charles C. Fu]
- X+ 291. extend view of tradeing list for long screens [Charles C. Fu]
- X+ 292. refresh() added to end of trade input routine [Charles C. Fu]
- X+ 293. do not process invalid country is takeback [Charles C. Fu]
- X+ 294. cause trade to fail for destroyed army or fleet. [Charles C. Fu]
- X+ 295. fixed mistype which prevented sale of land. [Charles C. Fu]
- X+ {Darn!, My sabotage was caught! :-) adam}
- X+ 296. fixed missetting of curntn which blocked ship trades [Charles C. Fu]
- X+ {Foiled Again! :-) Actually that code predated curntn use, so
- X+ we were bound to miss some in the conversion, adam}
- X+ 297. fixed bug with returning bids to losing nations [Charles C. Fu]
- X+ 298. let land trades fail during trade, not before [Charles C. Fu] (whatever)
- X+ 299. convert to doubles for calculation of treasury overflow. [C. Fu]
- X+ 300. relocated adjustment to MARCHer movment when changing statuses.
- X+ 301. added in a routine to give the items up for trade to a nation if
- X+ it captures a nations capitol. [David Soleno]
- X+ 302. fixed error messages generated by the orc takeover routine.
- X+ 303. made the rules file be read in from the default directory.
- X+ 304. made spell point gain for MONST powers additive.
- X+ 305. put a 25% cap on user defined charity.
- X+ 306. adjusted the combat routine to separate naval and army combat checks.
- X+ 307. added in a check to assure that combining overlarge fleets is checked.
- X+ 308. verified input checks in various locations in report.c.
- X+ 309. made god adjustment of ships to allow keeping of previous values on '\n'.
- X+ 310. gave god the ability to adjust army unit types.
- X+ 311. gave god the ability to adjust army move values.
- X+ 312. gave god the ability to adjust navy move values.
- X+ 313. fixed bug in reporting side during newspaper for naval battles.
- X+ 314. gave god the ability to adjust an army status.
- X
- X -------------------------------------------------------------------------
- X | 2.0 POSSIBLE SHORT-TERM ENHANCEMENTS/FIXES FOR CONQUER V5 |
- X*** oREADME Sat Mar 3 15:27:38 1990
- X--- README Sat Mar 3 15:27:53 1990
- X***************
- X*** 94,99 ****
- X--- 94,106 ----
- X unreferenced symbol errors occur, try adding "-ltermcap" after
- X the "-lcurses" line in the makefile.
- X
- X+ Note2: With some versions of 'make' the SHELL environment variable is
- X+ read to determine under what shell jobs should be spawned. The
- X+ Makefile for conquer was written with '/bin/sh' in mind, so if
- X+ any "command not found" errors appear, doing a:
- X+ setenv SHELL /bin/sh
- X+ before typing 'make', might alleviate the problem.
- X+
- X -----------------------------------------------------------
- X V administration instructions
- X -----------------------------------------------------------
- X***************
- X*** 109,115 ****
- X -a add new player
- X -x execute program
- X -d DIR to use play different game
- X- -p print a map
- X -r SCENARIO read map while making a new world
- X uses SCENARIO.ele, SCENARIO.veg, & SCENARIO.nat
- X
- X--- 116,121 ----
- X*** odata.h Sat Mar 3 15:27:39 1990
- X--- data.h Sat Mar 3 15:27:53 1990
- X***************
- X*** 581,587 ****
- X
- X /* magic macro: returns TRUE if the nation has that power*/
- X #define magic(NATION,POWER) ((ntn[NATION].powers&(POWER))!=0)
- X! #define ONMAP(x,y) (x>=0 && y>=0 && x<MAPX && y<MAPY)
- X
- X #ifndef HILIGHT
- X #define standout()
- X--- 581,587 ----
- X
- X /* magic macro: returns TRUE if the nation has that power*/
- X #define magic(NATION,POWER) ((ntn[NATION].powers&(POWER))!=0)
- X! #define ONMAP(x,y) ((x)>=0 && (y)>=0 && (x)<MAPX && (y)<MAPY)
- X
- X #ifndef HILIGHT
- X #define standout()
- X***************
- X*** 610,616 ****
- X #define check() checkout(__FILE__,__LINE__)
- X #endif DEBUG
- X
- X! #define GOLDTHRESH 10 /* min ratio of gold:jewels */
- X
- X #define SALT "aa" /* seed for crypt() encryption */
- X
- X--- 610,616 ----
- X #define check() checkout(__FILE__,__LINE__)
- X #endif DEBUG
- X
- X! #define GOLDTHRESH 10L /* min ratio of gold:jewels */
- X
- X #define SALT "aa" /* seed for crypt() encryption */
- X
- X*** oadmin.c Sat Mar 3 15:27:39 1990
- X--- admin.c Sat Mar 3 15:27:53 1990
- X***************
- X*** 53,59 ****
- X--- 53,61 ----
- X int geteuid(), getuid(), setuid(), realuser, l;
- X register int i,j;
- X char *name;
- X+ #ifndef __STDC__
- X void srand();
- X+ #endif
- X int getopt();
- X long time();
- X /* mflag = make world, a=add player, x=execute, p=print */
- X*** oextcmds.c Sat Mar 3 15:27:40 1990
- X--- extcmds.c Sat Mar 3 15:27:54 1990
- X***************
- X*** 178,192 ****
- X errormsg("Uh, sir. Aren't we doing that already?");
- X return;
- X }
- X- /* eliminate half starting movement if start out on march */
- X- if( P_ASTAT==MARCH && new_stat!=MARCH ) {
- X- if(P_AMOVE<(curntn->maxmove * *(unitmove+(P_ATYPE%UTYPE)))/50){
- X- errormsg("That troop has gone too far to stop marching");
- X- return;
- X- }
- X- P_AMOVE-=(curntn->maxmove * *(unitmove+(P_ATYPE%UTYPE)))/50;
- X- AADJMOV;
- X- }
- X if(new_stat == SCOUT) {
- X if(( P_ATYPE != A_SCOUT )&&( P_ASOLD >= 25)) {
- X errormsg("Need less than 25 men to scout");
- X--- 178,183 ----
- X***************
- X*** 232,237 ****
- X--- 223,238 ----
- X errormsg("Sorry, but you can't rule in that sector");
- X return;
- X }
- X+ }
- X+
- X+ /* eliminate half starting movement if start out on march */
- X+ if( P_ASTAT==MARCH && new_stat!=MARCH ) {
- X+ if(P_AMOVE<(curntn->maxmove * *(unitmove+(P_ATYPE%UTYPE)))/50){
- X+ errormsg("That troop has gone too far to stop marching");
- X+ return;
- X+ }
- X+ P_AMOVE-=(curntn->maxmove * *(unitmove+(P_ATYPE%UTYPE)))/50;
- X+ AADJMOV;
- X }
- X
- X /* location dependent statuses make armies stay in place */
- X*** orandeven.c Sat Mar 3 15:27:43 1990
- X--- randeven.c Sat Mar 3 15:27:54 1990
- X***************
- X*** 207,212 ****
- X--- 207,213 ----
- X ntn[new].powers= ntn[target].powers;
- X ntn[new].tships= 0;
- X ntn[new].tsctrs = split;
- X+ ntn[new].tax_rate = 10;
- X
- X /* first check first letter of name */
- X if( markok(toupper(ntn[new].name[0]),FALSE) )
- X*** ocexecute.c Sat Mar 3 15:27:39 1990
- X--- cexecute.c Sat Mar 3 15:27:55 1990
- X***************
- X*** 197,203 ****
- X back into your capitol */
- X if((sct[x][y].owner!=country)&&(country!=0)) {
- X sct[curntn->capx][curntn->capy].people+=armynum;
- X- fprintf(stderr,"ERROR: <%s> told to put %d civilians in sector %d,%d not owned - placed in capitol\n",curntn->name,armynum,x,y);
- X break;
- X }
- X sct[x][y].people=armynum;
- X--- 197,202 ----
- X***************
- X*** 206,212 ****
- X /* if you dont own it, put people in your capitol */
- X if((sct[x][y].owner!=country)&&(country!=0)) {
- X sct[curntn->capx][curntn->capy].people+=armynum;
- X- fprintf(stderr,"SACIV3: <%s> told to put %d civilians in sector %d,%d not owned - placed in capitol\n",curntn->name,armynum,x,y);
- X }
- X else
- X {
- X--- 205,210 ----
- X***************
- X*** 258,264 ****
- X case DESTRY:
- X sct[ntn[armynum].capx][ntn[armynum].capy].owner=savectry;
- X country=armynum;
- X! destroy(country);
- X country=savectry;
- X break;
- X case CHG_MGK:
- X--- 256,262 ----
- X case DESTRY:
- X sct[ntn[armynum].capx][ntn[armynum].capy].owner=savectry;
- X country=armynum;
- X! if (isupdate) destroy(country);
- X country=savectry;
- X break;
- X case CHG_MGK:
- X*** oforms.c Sat Mar 3 15:27:40 1990
- X--- forms.c Sat Mar 3 15:27:55 1990
- X***************
- X*** 579,595 ****
- X intval = get_number();
- X if (intval < 0) {
- X break;
- X! } else if( intval > 100 )
- X errormsg("ERROR - invalid charity rate");
- X /* this will protect from both underflow and overflow */
- X! else if((int)curntn->popularity + 2*(intval - (int)curntn->charity)>100)
- X! errormsg("ERROR - you may not increase charity that much");
- X! else if((int)curntn->popularity + 2*(intval - (int)curntn->charity)<0)
- X! errormsg("ERROR - you may not decrease charity that much");
- X! else {
- X! curntn->popularity += (unsigned char) 2*(intval - (int) curntn->charity);
- X! curntn->charity = intval;
- X! NADJNTN;
- X }
- X break;
- X case '5': /* terror */
- X--- 579,607 ----
- X intval = get_number();
- X if (intval < 0) {
- X break;
- X! } else if( intval > 100 ) {
- X errormsg("ERROR - invalid charity rate");
- X+ } else if (intval > 25) {
- X+ errormsg("You are kidding, right?");
- X /* this will protect from both underflow and overflow */
- X! } else if(intval > curntn->charity) {
- X! if (2 * (intval - (int)curntn->charity) + (int) curntn->popularity > 100) {
- X! errormsg("ERROR - you may not increase charity that much");
- X! } else {
- X! curntn->popularity += (unsigned char) 2*(intval - (int) curntn->charity);
- X! curntn->charity = intval;
- X! NADJNTN;
- X! NADJNTN2;
- X! }
- X! } else {
- X! if (2 * (intval - (int)curntn->charity) < - (int) curntn->popularity) {
- X! errormsg("ERROR - you may not decrease charity that much");
- X! } else {
- X! curntn->popularity += (unsigned char) 2*(intval - (int) curntn->charity);
- X! curntn->charity = intval;
- X! NADJNTN;
- X! NADJNTN2;
- X! }
- X }
- X break;
- X case '5': /* terror */
- X*** omisc.c Sat Mar 3 15:27:41 1990
- X--- misc.c Sat Mar 3 15:27:55 1990
- X***************
- X*** 886,891 ****
- X--- 886,894 ----
- X /* advertise */
- X fprintf(fnews,"1.\tCapitol of %s sacked by %s\n",ntn[cntry].name,ntn[nation].name);
- X
- X+ /* Remove goods from trade board */
- X+ fixtrade(cntry);
- X+
- X /* first give all prizes to the conquerer */
- X if(curntn->tgold > 0) { /* all gold */
- X ntn[nation].tgold += curntn->tgold;
- X***************
- X*** 1088,1096 ****
- X } /* switch */
- X } /* for */
- X
- X! if((magic(cntry,DERVISH)==1) ||(magic(cntry,DESTROYER)==1)) {
- X! veg_cost[ ICE ] = 1;
- X! veg_cost[ DESERT ] = 1;
- X }
- X
- X for( j = 0; ele[j] != '0'; j++ ) {
- X--- 1091,1099 ----
- X } /* switch */
- X } /* for */
- X
- X! if(magic(cntry,DERVISH) || magic(cntry,DESTROYER)) {
- X! veg_cost[ ICE ] = 0;
- X! veg_cost[ DESERT ] = 0;
- X }
- X
- X for( j = 0; ele[j] != '0'; j++ ) {
- X*** oreports.c Sat Mar 3 15:27:43 1990
- X--- reports.c Sat Mar 3 15:27:55 1990
- X***************
- X*** 143,149 ****
- X continue;
- X }
- X #ifdef TRADE
- X! if(P_ASTAT==TRADED) {
- X errormsg("May not change traded army");
- X continue;
- X }
- X--- 143,149 ----
- X continue;
- X }
- X #ifdef TRADE
- X! if(isgod==FALSE && P_ASTAT==TRADED) {
- X errormsg("May not change traded army");
- X continue;
- X }
- X***************
- X*** 154,160 ****
- X ypos++;
- X clrtoeol();
- X #ifdef OGOD
- X! if(isgod==TRUE) mvaddstr(ypos++,0,"GOD OPTIONS: 6) LOCATION 7) SOLDIERS");
- X clrtoeol();
- X #endif OGOD
- X ypos++;
- X--- 154,160 ----
- X ypos++;
- X clrtoeol();
- X #ifdef OGOD
- X! if(isgod==TRUE) mvaddstr(ypos++,0,"GOD OPTIONS: 6) LOCATION 7) SOLDIERS 8) MOVE 9) UNITTYPE 0) STATUS ");
- X clrtoeol();
- X #endif OGOD
- X ypos++;
- X***************
- X*** 272,283 ****
- X mvaddstr(ypos++,0,"What is the New Total Soldiers: ");
- X refresh();
- X men = get_number();
- X! if (men>0) {
- X P_ASOLD=men;
- X AADJMEN;
- X }
- X }
- X break;
- X #endif OGOD
- X default:
- X errormsg("Invalid Input");
- X--- 272,328 ----
- X mvaddstr(ypos++,0,"What is the New Total Soldiers: ");
- X refresh();
- X men = get_number();
- X! if (men>=0) {
- X P_ASOLD=men;
- X AADJMEN;
- X }
- X }
- X break;
- X+ case '8':
- X+ if (isgod == TRUE) {
- X+ mvaddstr(ypos, 0, "What is the new movement value?");
- X+ refresh();
- X+ men = get_number();
- X+
- X+ if (men >=0 && men <= 100) {
- X+ P_AMOVE = men;
- X+ }
- X+ }
- X+ break;
- X+ case '9':
- X+ if (isgod == TRUE) {
- X+ mvaddstr(ypos++, 0, "Change unit type; Normal 0-26, Leader 27-44, Monster 45-59");
- X+ mvaddstr(ypos++, 0, "[MajorHackEH?] New Type is? ");
- X+ refresh();
- X+ men = get_number();
- X+
- X+ if (men < 0 || men > MAXMONSTER) break;
- X+ if (men > 44) men += TWOUTYPE;
- X+ else if (men > NOUNITTYPES) men += UTYPE;
- X+
- X+ P_ATYPE = men;
- X+ }
- X+ break;
- X+ case '0':
- X+ if (isgod == TRUE) {
- X+ mvprintw(ypos++, 0, "1) Mar 2) Sct 3) Garr 4) Trade 5) Mil 6) Fly 7) Def 8) MDef 9) Att 10) MAtt");
- X+ mvprintw(ypos++, 0, "11) Genrl 12) Sort 13) Sieg 14) Sgd 15) Onb 16) Rule 17+) Group (leader-=17)");
- X+ mvaddstr(ypos++, 0, "Set what status? ");
- X+ refresh();
- X+ men = get_number();
- X+
- X+ if (men < 0 || men > NUMSTATUS+MAXARM)
- X+ break;
- X+ if (men >= NUMSTATUS) {
- X+ i = curntn->arm[men-NUMSTATUS].unittyp;
- X+ if (i < MINLEADER || i >= MINMONSTER) {
- X+ errormsg("There is no such leader to group under");
- X+ break;
- X+ }
- X+ }
- X+ P_ASTAT = men;
- X+ }
- X+ break;
- X #endif OGOD
- X default:
- X errormsg("Invalid Input");
- X***************
- X*** 585,593 ****
- X clrtoeol();
- X refresh();
- X nvynum = get_number();
- X! if(nvynum<0) break;
- X #ifdef TRADE
- X! if (curntn->nvy[nvynum].commodity==TRADED) {
- X errormsg("Sorry - That Navy is up for trade");
- X continue;
- X }
- X--- 630,638 ----
- X clrtoeol();
- X refresh();
- X nvynum = get_number();
- X! if(nvynum<0) continue;
- X #ifdef TRADE
- X! if (isgod == FALSE && curntn->nvy[nvynum].commodity==TRADED) {
- X errormsg("Sorry - That Navy is up for trade");
- X continue;
- X }
- X***************
- X*** 599,605 ****
- X mvaddstr(ypos++,0,"OPTIONS: 1) TRANSFER / MERGE, 2) SPLIT NAVY, 3) DISBAND NAVY");
- X clrtoeol();
- X #ifdef OGOD
- X! if(isgod==TRUE) mvaddstr(ypos++,0,"GOD OPTIONS: 4) ADJUST SHIPS, 5) LOCATION, 6) CREW");
- X ypos++;
- X clrtoeol();
- X #endif OGOD
- X--- 644,650 ----
- X mvaddstr(ypos++,0,"OPTIONS: 1) TRANSFER / MERGE, 2) SPLIT NAVY, 3) DISBAND NAVY");
- X clrtoeol();
- X #ifdef OGOD
- X! if(isgod==TRUE) mvaddstr(ypos++,0,"GOD OPTIONS: 4) ADJUST SHIPS, 5) LOCATION, 6) CREW 7) MOVE");
- X ypos++;
- X clrtoeol();
- X #endif OGOD
- X***************
- X*** 630,635 ****
- X--- 675,699 ----
- X errormsg("Sorry -- One of the two Armies must be unloaded");
- X }
- X else if((newx==P_NXLOC)&&(newy==P_NYLOC)) {
- X+ /* first check sizes */
- X+ for(i=N_LIGHT;i<=N_HEAVY;i++) {
- X+ if (P_NGAL(i) + SHIPS(curntn->nvy[newnavy].galleys,i) > N_MASK) {
- X+ i = (-1);
- X+ break;
- X+ }
- X+ if (P_NMER(i) + SHIPS(curntn->nvy[newnavy].merchant,i) > N_MASK) {
- X+ i = (-1);
- X+ break;
- X+ }
- X+ if (P_NWAR(i) + SHIPS(curntn->nvy[newnavy].warships,i) > N_MASK) {
- X+ i = (-1);
- X+ break;
- X+ }
- X+ }
- X+ if (i == (-1)) {
- X+ errormsg("That would cause you to have too many ships of one type");
- X+ break;
- X+ }
- X crew = flthold(nvynum)*P_NCREW;
- X people = fltmhold(nvynum)*P_NPEOP;
- X crew += flthold(newnavy)*curntn->nvy[newnavy].crew;
- X***************
- X*** 691,699 ****
- X curntn->nvy[navy].people=P_NPEOP;
- X curntn->nvy[navy].smove=P_NMOVE;
- X
- X mvaddstr(LINES-2,0,"Do you wish to separate warships from remainder of fleet?");
- X refresh();
- X! if(getch()=='y') {
- X curntn->nvy[navy].warships=P_NWSHP;
- X P_NWSHP=0;
- X NADJWAR;
- X--- 755,764 ----
- X curntn->nvy[navy].people=P_NPEOP;
- X curntn->nvy[navy].smove=P_NMOVE;
- X
- X+ if (P_NWSHP != 0)
- X mvaddstr(LINES-2,0,"Do you wish to separate warships from remainder of fleet?");
- X refresh();
- X! if(P_NWSHP!=0 && getch()=='y') {
- X curntn->nvy[navy].warships=P_NWSHP;
- X P_NWSHP=0;
- X NADJWAR;
- X***************
- X*** 715,720 ****
- X--- 780,786 ----
- X break;
- X }
- X for(shipsize=N_LIGHT;shipsize<=N_HEAVY;shipsize++) {
- X+ if (P_NWAR(shipsize) == 0) continue;
- X mvprintw(ypos,0,"How Many %s Warships To Split?",fltstr[shipsize]);
- X clrtoeol();
- X refresh();
- X***************
- X*** 724,729 ****
- X--- 790,796 ----
- X (void) addwships(navy,shipsize,newnavy);
- X }
- X for(shipsize=N_LIGHT;shipsize<=N_HEAVY;shipsize++) {
- X+ if (P_NMER(shipsize) == 0) continue;
- X mvprintw(ypos,0,"How Many %s Merchants To Split?",fltstr[shipsize]);
- X clrtoeol();
- X refresh();
- X***************
- X*** 733,738 ****
- X--- 800,806 ----
- X (void) addmships(navy,shipsize,newnavy);
- X }
- X for(shipsize=N_LIGHT;shipsize<=N_HEAVY;shipsize++) {
- X+ if (P_NGAL(shipsize) == 0) continue;
- X mvprintw(ypos,0,"How Many %s Galleys To Split?",fltstr[shipsize]);
- X clrtoeol();
- X refresh();
- X***************
- X*** 791,822 ****
- X case '4':
- X if (isgod==TRUE) {
- X /* ADJUST SHIPS */
- X- P_NWSHP=0;
- X- P_NMSHP=0;
- X- P_NGSHP=0;
- X for(shipsize=N_LIGHT;shipsize<=N_HEAVY;shipsize++) {
- X! mvprintw(ypos,0,"How Many %s Warships?",fltstr[shipsize]);
- X clrtoeol();
- X refresh();
- X newnavy = get_number();
- X! if(newnavy>N_MASK||newnavy<0) newnavy=0;
- X! (void) NADD_WAR(newnavy);
- X }
- X for(shipsize=N_LIGHT;shipsize<=N_HEAVY;shipsize++) {
- X! mvprintw(ypos,0,"How Many %s Merchants?",fltstr[shipsize]);
- X clrtoeol();
- X refresh();
- X newnavy = get_number();
- X! if(newnavy>N_MASK||newnavy<0) newnavy=0;
- X! (void) NADD_MER(newnavy);
- X }
- X for(shipsize=N_LIGHT;shipsize<=N_HEAVY;shipsize++) {
- X! mvprintw(ypos,0,"How Many %s Galleys?",fltstr[shipsize]);
- X clrtoeol();
- X refresh();
- X newnavy = get_number();
- X! if(newnavy>N_MASK||newnavy<0) newnavy=0;
- X! (void) NADD_GAL(newnavy);
- X }
- X NADJWAR;
- X NADJMER;
- X--- 859,908 ----
- X case '4':
- X if (isgod==TRUE) {
- X /* ADJUST SHIPS */
- X for(shipsize=N_LIGHT;shipsize<=N_HEAVY;shipsize++) {
- X! mvprintw(ypos,0,"How Many %s Warships? [%d] ",
- X! fltstr[shipsize],P_NWAR(shipsize));
- X clrtoeol();
- X refresh();
- X newnavy = get_number();
- X! if (newnavy < 0 || newnavy > N_MASK) continue;
- X! newnavy -= P_NWAR(shipsize);
- X! if (newnavy > 0) {
- X! (void) NADD_WAR(newnavy);
- X! } else if (newnavy < 0) {
- X! newnavy = -newnavy;
- X! (void) NSUB_WAR(newnavy);
- X! }
- X }
- X for(shipsize=N_LIGHT;shipsize<=N_HEAVY;shipsize++) {
- X! mvprintw(ypos,0,"How Many %s Merchants? [%d] ",
- X! fltstr[shipsize], P_NMER(shipsize));
- X clrtoeol();
- X refresh();
- X newnavy = get_number();
- X! if(newnavy>N_MASK||newnavy<0) continue;
- X! newnavy -= P_NMER(shipsize);
- X! if (newnavy > 0) {
- X! (void) NADD_MER(newnavy);
- X! } else if (newnavy < 0) {
- X! newnavy = -newnavy;
- X! (void) NSUB_MER(newnavy);
- X! }
- X }
- X for(shipsize=N_LIGHT;shipsize<=N_HEAVY;shipsize++) {
- X! mvprintw(ypos,0,"How Many %s Galleys? [%d]",
- X! fltstr[shipsize], P_NGAL(shipsize));
- X clrtoeol();
- X refresh();
- X newnavy = get_number();
- X! if(newnavy>N_MASK||newnavy<0) continue;
- X! newnavy -= P_NGAL(shipsize);
- X! if (newnavy > 0) {
- X! (void) NADD_GAL(newnavy);
- X! } else if (newnavy < 0) {
- X! newnavy = -newnavy;
- X! (void) NSUB_GAL(newnavy);
- X! }
- X }
- X NADJWAR;
- X NADJMER;
- X***************
- X*** 850,855 ****
- X--- 936,951 ----
- X if (crew>=0 && crew<=SHIPCREW) {
- X P_NCREW = crew;
- X NADJCRW;
- X+ }
- X+ }
- X+ break;
- X+ case '7':
- X+ if (isgod == TRUE) {
- X+ mvaddstr(ypos, 0, "Set what move value? ");
- X+ refresh();
- X+ newnavy = get_number();
- X+ if (newnavy <= 100 && newnavy >= 0) {
- X+ P_NMOVE = newnavy;
- X }
- X }
- X break;
- X*** ocombat.c Sat Mar 3 15:27:39 1990
- X--- combat.c Sat Mar 3 15:27:56 1990
- X***************
- X*** 37,42 ****
- X--- 37,47 ----
- X int dnation; /*one nation defending in this fight*/
- X int count=0; /*number of armies or navies in sector*/
- X
- X+ /* indicators of naval or army combat */
- X+ #define COMBAT_X 0
- X+ #define COMBAT_A 1
- X+ #define COMBAT_N 2
- X+
- X /************************************************************************/
- X /* COMBAT() run all combat on the map */
- X /* for each sector, determine if armies in with attack mode */
- X***************
- X*** 45,51 ****
- X combat()
- X {
- X register int i,j;
- X! char **fought; /* TRUE if already fought in sctr */
- X int temp,ctry;
- X int initialized=FALSE; /* TRUE if arrays initialized */
- X short armynum,nvynum;
- X--- 50,56 ----
- X combat()
- X {
- X register int i,j;
- X! char **fought; /* SET: if already fought in sctr */
- X int temp,ctry;
- X int initialized=FALSE; /* TRUE if arrays initialized */
- X short armynum,nvynum;
- X***************
- X*** 60,66 ****
- X /*for each nation, if in attack mode run a check*/
- X
- X /* no sectors have been fought in yet */
- X! for(i=0;i<MAPX;i++) for(j=0;j<MAPY;j++) fought[i][j]=FALSE;
- X
- X for(ctry=NTOTAL-1;ctry>0;ctry--) if(isactive(ntn[ctry].active)) {
- X
- X--- 65,71 ----
- X /*for each nation, if in attack mode run a check*/
- X
- X /* no sectors have been fought in yet */
- X! for(i=0;i<MAPX;i++) for(j=0;j<MAPY;j++) fought[i][j]=COMBAT_X;
- X
- X for(ctry=NTOTAL-1;ctry>0;ctry--) if(isactive(ntn[ctry].active)) {
- X
- X***************
- X*** 72,83 ****
- X if((aptr->sold>0)
- X &&(aptr->stat>=ATTACK)
- X &&(aptr->stat<=SORTIE||aptr->stat>=NUMSTATUS)
- X! &&(!fought[aptr->xloc][aptr->yloc])){
- X
- X /* someone can initiate combat in xspot,yspot */
- X xspot=aptr->xloc;
- X yspot=aptr->yloc;
- X! fought[xspot][yspot]=TRUE;
- X
- X /*initialize matrix*/
- X if( !initialized ) {
- X--- 77,88 ----
- X if((aptr->sold>0)
- X &&(aptr->stat>=ATTACK)
- X &&(aptr->stat<=SORTIE||aptr->stat>=NUMSTATUS)
- X! &&(!(fought[aptr->xloc][aptr->yloc]&COMBAT_A))){
- X
- X /* someone can initiate combat in xspot,yspot */
- X xspot=aptr->xloc;
- X yspot=aptr->yloc;
- X! fought[xspot][yspot]|=COMBAT_A;
- X
- X /*initialize matrix*/
- X if( !initialized ) {
- X***************
- X*** 131,142 ****
- X /*navy combat*/
- X for(j=0;j<MAXNAVY;j++)
- X if((nptr->nvy[j].warships!=0)
- X! &&(fought[nptr->nvy[j].xloc][nptr->nvy[j].yloc]==0)
- X! &&(sct[nptr->nvy[j].xloc][nptr->nvy[j].yloc].altitude==WATER)){
- X
- X xspot=nptr->nvy[j].xloc;
- X yspot=nptr->nvy[j].yloc;
- X! fought[xspot][yspot]=1;
- X
- X /*initialize matrix*/
- X if( !initialized ){
- X--- 136,146 ----
- X /*navy combat*/
- X for(j=0;j<MAXNAVY;j++)
- X if((nptr->nvy[j].warships!=0)
- X! &&(!(fought[nptr->nvy[j].xloc][nptr->nvy[j].yloc]&COMBAT_N))) {
- X
- X xspot=nptr->nvy[j].xloc;
- X yspot=nptr->nvy[j].yloc;
- X! fought[xspot][yspot]|=COMBAT_N;
- X
- X /*initialize matrix*/
- X if( !initialized ){
- X***************
- X*** 156,166 ****
- X if(isactive(ntn[country].active))
- X for(nvynum=0;nvynum<MAXNAVY;nvynum++)
- X if((NWSHP+NMSHP+NGSHP!=0)
- X! &&(abs(NXLOC-xspot)<=2)
- X! &&(abs(NYLOC-yspot)<=2)
- X! &&(sct[NXLOC][NYLOC].altitude==WATER)
- X &&(count<MGKNUM)) {
- X! fought[NXLOC][NYLOC]=1;
- X if((country!=ctry)
- X &&(nptr->dstatus[country]>HOSTILE)){
- X valid=TRUE;
- X--- 160,171 ----
- X if(isactive(ntn[country].active))
- X for(nvynum=0;nvynum<MAXNAVY;nvynum++)
- X if((NWSHP+NMSHP+NGSHP!=0)
- X! &&(((NXLOC==xspot) && (NYLOC==yspot)) ||
- X! (sct[NXLOC][NYLOC].altitude==WATER
- X! &&(abs(NXLOC-xspot)<=2)
- X! &&(abs(NYLOC-yspot)<=2)))
- X &&(count<MGKNUM)) {
- X! fought[NXLOC][NYLOC]|=COMBAT_N;
- X if((country!=ctry)
- X &&(nptr->dstatus[country]>HOSTILE)){
- X valid=TRUE;
- X***************
- X*** 804,817 ****
- X
- X for(cnum=0;cnum<count;cnum++) if(owner[cnum]>(-1)){
- X if( unitnum != (-1) ) cnum=unitnum;
- X! if((side[cnum]==ATKR)&&(retreatside==ATKR)){
- X! ntn[owner[cnum]].arm[unit[cnum]].xloc = retreatx;
- X! ntn[owner[cnum]].arm[unit[cnum]].yloc = retreaty;
- X }
- X- else if((side[cnum]==DFND)&&(retreatside==DFND)){
- X- ntn[owner[cnum]].arm[unit[cnum]].xloc = retreatx;
- X- ntn[owner[cnum]].arm[unit[cnum]].yloc = retreaty;
- X- }
- X if( unitnum != (-1) ) return;
- X }
- X }
- X--- 809,824 ----
- X
- X for(cnum=0;cnum<count;cnum++) if(owner[cnum]>(-1)){
- X if( unitnum != (-1) ) cnum=unitnum;
- X! if(side[cnum] == retreatside){
- X! if ((ntn[owner[cnum]].arm[unit[cnum]].unittyp==A_MARINES)||
- X! (ntn[owner[cnum]].arm[unit[cnum]].unittyp==A_SAILOR)){
- X! ntn[owner[cnum]].arm[unit[cnum]].sold *= 85;
- X! ntn[owner[cnum]].arm[unit[cnum]].sold /= 100;
- X! } else {
- X! ntn[owner[cnum]].arm[unit[cnum]].xloc = retreatx;
- X! ntn[owner[cnum]].arm[unit[cnum]].yloc = retreaty;
- X! }
- X }
- X if( unitnum != (-1) ) return;
- X }
- X }
- X***************
- X*** 868,875 ****
- X * galley crew 2
- X * merchant crew 4
- X * soldiers onboard:
- X! * SAILOR/ARCHER 3/4
- X! * MARINE 1/3
- X * others 4/3
- X */
- X for(j=0;j<count;j++) if(owner[j]!=(-1)){
- X--- 875,882 ----
- X * galley crew 2
- X * merchant crew 4
- X * soldiers onboard:
- X! * SAILOR/ARCHER 3/4
- X! * MARINE 1/3
- X * others 4/3
- X */
- X for(j=0;j<count;j++) if(owner[j]!=(-1)){
- X***************
- X*** 959,967 ****
- X /* calculate capture percentages */
- X /*
- X * This formula produces:
- X! * 0% capture for 1:100 odds
- X * 2% capture for 1:10 odds
- X! * 15% capture for 1:1 odds
- X * 60% capture for 10:1 odds
- X * 100% capture for >60:1 odds
- X * with linear progression between each.
- X--- 966,974 ----
- X /* calculate capture percentages */
- X /*
- X * This formula produces:
- X! * 0% capture for 1:100 odds
- X * 2% capture for 1:10 odds
- X! * 15% capture for 1:1 odds
- X * 60% capture for 10:1 odds
- X * 100% capture for >60:1 odds
- X * with linear progression between each.
- X***************
- X*** 1240,1249 ****
- X k=0;
- X for(i=0;i<j;i++) if(owner[j]==owner[i]) k=1;
- X if(k==0) {
- X! if(side[i]==DFND)
- X fprintf(fnews,", attacker %s",ntn[owner[j]].name);
- X! else if(side[i]==ATKR)
- X fprintf(fnews,", defender %s",ntn[owner[j]].name);
- X }
- X }
- X fprintf(fnews,"\n");
- X--- 1247,1257 ----
- X k=0;
- X for(i=0;i<j;i++) if(owner[j]==owner[i]) k=1;
- X if(k==0) {
- X! if(side[j]==ATKR)
- X fprintf(fnews,", attacker %s",ntn[owner[j]].name);
- X! else if(side[j]==DFND)
- X fprintf(fnews,", defender %s",ntn[owner[j]].name);
- X+ else fprintf(fnews,", neutral %s",ntn[owner[j]].name);
- X }
- X }
- X fprintf(fnews,"\n");
- X*** omove.c Sat Mar 3 15:27:41 1990
- X--- move.c Sat Mar 3 15:27:56 1990
- X***************
- X*** 63,68 ****
- X--- 63,72 ----
- X } else { /*army*/
- X mvprintw(LINES-4,0,"ARMY %d: ",armynum);
- X clrtoeol();
- X+ if (P_ASTAT>=NUMSTATUS) {
- X+ groupmen = P_ASTAT - NUMSTATUS;
- X+ P_AMOVE = curntn->arm[groupmen].smove;
- X+ }
- X if(P_AMOVE==0){
- X errormsg("That Unit is Not Able to Move");
- X redraw=DONE;
- X***************
- X*** 74,81 ****
- X if(P_ASTAT>=NUMSTATUS) {
- X mvprintw(LINES-4,10,"Member of Army Group %d!! Continue? ",P_ASTAT-NUMSTATUS);
- X refresh();
- X! if( getch() == 'y' ) P_ASTAT=ATTACK;
- X! else {
- X redraw=DONE;
- X armornvy=AORN;
- X return;
- X--- 78,87 ----
- X if(P_ASTAT>=NUMSTATUS) {
- X mvprintw(LINES-4,10,"Member of Army Group %d!! Continue? ",P_ASTAT-NUMSTATUS);
- X refresh();
- X! if( getch() == 'y' ) {
- X! P_ASTAT=ATTACK;
- X! AADJSTAT;
- X! } else {
- X redraw=DONE;
- X armornvy=AORN;
- X return;
- X***************
- X*** 261,267 ****
- X valid=FALSE;
- X xcurs=oldxcurs;
- X ycurs=oldycurs;
- X! } else if(movecost[XREAL][YREAL] >= 0){
- X /* LAND OF SOME TYPE */
- X valid=FALSE;
- X /* check for nearby water */
- X--- 267,274 ----
- X valid=FALSE;
- X xcurs=oldxcurs;
- X ycurs=oldycurs;
- X! } else if(movecost[XREAL][YREAL] >= 0
- X! || movecost[XREAL][YREAL] == -2){
- X /* LAND OF SOME TYPE */
- X valid=FALSE;
- X /* check for nearby water */
- X*** oupdate.c Sat Mar 3 15:27:45 1990
- X--- update.c Sat Mar 3 15:27:59 1990
- X***************
- X*** 27,32 ****
- X--- 27,42 ----
- X int **attr; /* sector attractiveness */
- X long **newpop; /* storage for old population */
- X
- X+ long
- X+ dtol(d) double d;
- X+ {
- X+ char tempstr[BIGLTH];
- X+ long l;
- X+ sprintf(tempstr,"%-60.0lf",d);
- X+ sscanf(tempstr,"%ld",&l);
- X+ return(l);
- X+ }
- X+
- X /****************************************************************/
- X /* UPDATE() - updates the whole world */
- X /****************************************************************/
- X***************
- X*** 625,631 ****
- X if(rand()%100 < 30) { /* new leader takes over */
- X x++;
- X for(armynum=0;armynum<MAXARM;armynum++)
- X! if(P_ATYPE == x) break;
- X if( armynum<MAXARM) {
- X P_ATYPE=x-1;
- X P_ASOLD= *(unitminsth+(x-1)%UTYPE);
- X--- 635,641 ----
- X if(rand()%100 < 30) { /* new leader takes over */
- X x++;
- X for(armynum=0;armynum<MAXARM;armynum++)
- X! if(P_ATYPE == x && P_ASOLD > 0) break;
- X if( armynum<MAXARM) {
- X P_ATYPE=x-1;
- X P_ASOLD= *(unitminsth+(x-1)%UTYPE);
- X***************
- X*** 699,706 ****
- X ntn[country].spellpts+=3;
- X }
- X if(magic(country,MA_MONST)==TRUE) ntn[country].spellpts+=2;
- X! else if(magic(country,AV_MONST)==TRUE) ntn[country].spellpts+=1;
- X! else if((magic(country,MI_MONST)==TRUE)
- X &&( rand()%2==0)) ntn[country].spellpts+=1;
- X }
- X free(attr);
- X--- 709,716 ----
- X ntn[country].spellpts+=3;
- X }
- X if(magic(country,MA_MONST)==TRUE) ntn[country].spellpts+=2;
- X! if(magic(country,AV_MONST)==TRUE) ntn[country].spellpts+=1;
- X! if((magic(country,MI_MONST)==TRUE)
- X &&( rand()%2==0)) ntn[country].spellpts+=1;
- X }
- X free(attr);
- X***************
- X*** 1212,1221 ****
- X &&( A->stat<NUMSTATUS ))
- X A->stat=FLIGHT;
- X
- X! if((magic(country,ROADS)==1)
- X &&(sct[AX][AY].owner!=country)){
- X if(A->smove>7) A->smove-=4;
- X! else A->smove=4;
- X }
- X
- X if((magic(country,SAPPER)==1)
- X--- 1222,1231 ----
- X &&( A->stat<NUMSTATUS ))
- X A->stat=FLIGHT;
- X
- X! if((magic(country,ROADS)==TRUE)
- X &&(sct[AX][AY].owner!=country)){
- X if(A->smove>7) A->smove-=4;
- X! else if (A->smove>4) A->smove=4;
- X }
- X
- X if((magic(country,SAPPER)==1)
- X***************
- X*** 1411,1417 ****
- X tempflt = (float) curntn->tfood * (100-curntn->spoilrate);
- X curntn->tfood = (long) (tempflt / 100.0);
- X
- X! if(curntn->tgold > GOLDTHRESH*curntn->jewels){
- X /* buy jewels off commodities board */
- X xx=curntn->tgold-GOLDTHRESH*curntn->jewels;
- X if (ispc(curntn->active)) {
- X--- 1421,1427 ----
- X tempflt = (float) curntn->tfood * (100-curntn->spoilrate);
- X curntn->tfood = (long) (tempflt / 100.0);
- X
- X! if((0.0+curntn->tgold) - GOLDTHRESH*(0.0+curntn->jewels) > 0.0){
- X /* buy jewels off commodities board */
- X xx=curntn->tgold-GOLDTHRESH*curntn->jewels;
- X if (ispc(curntn->active)) {
- X***************
- X*** 1419,1429 ****
- X fprintf(fm,"Message from Conquer\n\n");
- X fprintf(fm,"Gold imbalance forced your treasury to purchase\n");
- X fprintf(fm,"%ld jewels for %ld gold talons to compensate.\n",
- X! xx/GODPRICE*GODJEWL,xx);
- X mailclose(country);
- X }
- X }
- X! curntn->jewels += (xx/GODPRICE*GODJEWL);
- X curntn->tgold -= xx;
- X }
- X
- X--- 1429,1440 ----
- X fprintf(fm,"Message from Conquer\n\n");
- X fprintf(fm,"Gold imbalance forced your treasury to purchase\n");
- X fprintf(fm,"%ld jewels for %ld gold talons to compensate.\n",
- X! dtol((double)xx*GODJEWL/GODPRICE)
- X! ,xx);
- X mailclose(country);
- X }
- X }
- X! curntn->jewels += dtol((double)xx*GODJEWL/GODPRICE);
- X curntn->tgold -= xx;
- X }
- X
- X*** ocommands.c Sat Mar 3 15:27:39 1990
- X--- commands.c Sat Mar 3 15:28:00 1990
- X***************
- X*** 189,195 ****
- X mvaddstr(LINES-3,7,"What nation owner:");
- X refresh();
- X x = get_country();
- X! if (x<NTOTAL) sptr->owner=x;
- X reset_god();
- X return;
- X case 'p':
- X--- 189,195 ----
- X mvaddstr(LINES-3,7,"What nation owner:");
- X refresh();
- X x = get_country();
- X! if (x>0 && x<NTOTAL) sptr->owner=x;
- X reset_god();
- X return;
- X case 'p':
- X***************
- X*** 200,206 ****
- X }
- X mvaddstr(LINES-3,7,"new population for sector: ");
- X refresh();
- X! sptr->people = (long) get_number();
- X reset_god();
- X return;
- X case 't':
- X--- 200,208 ----
- X }
- X mvaddstr(LINES-3,7,"new population for sector: ");
- X refresh();
- X! metal = get_number();
- X! if (metal <= (-1)) return;
- X! sptr->people = metal;
- X reset_god();
- X return;
- X case 't':
- X***************
- X*** 222,228 ****
- X mvaddstr(LINES-1,7,"new sector value: ");
- X refresh();
- X x = get_number();
- X! if(x<100 && x>=0)
- X if(y>END_MINE) {
- X sptr->jewels = (char)x;
- X sptr->metal = 0;
- X--- 224,230 ----
- X mvaddstr(LINES-1,7,"new sector value: ");
- X refresh();
- X x = get_number();
- X! if(x<100 && x>0) {
- X if(y>END_MINE) {
- X sptr->jewels = (char)x;
- X sptr->metal = 0;
- X***************
- X*** 230,235 ****
- X--- 232,241 ----
- X sptr->metal = (char)x;
- X sptr->jewels = 0;
- X }
- X+ } else {
- X+ sptr->jewels = 0;
- X+ sptr->metal = 0;
- X+ }
- X } else {
- X sptr->jewels=0;
- X sptr->metal=0;
- X***************
- X*** 1119,1126 ****
- X if(strncmp(line,"END",3)==0) contd=TRUE;
- X }
- X standout();
- X! mvaddstr(LINES-3,(COLS/2)-22,"HIT ANY KEY TO CONTINUE");
- X! mvaddstr(LINES-2,(COLS/2)-22,"HIT RETURN TO DELETE MESSAGE");
- X standend();
- X refresh();
- X inpch=getch();
- X--- 1125,1132 ----
- X if(strncmp(line,"END",3)==0) contd=TRUE;
- X }
- X standout();
- X! mvaddstr(LINES-3,(COLS/2)-13,"HIT ANY KEY TO CONTINUE");
- X! mvaddstr(LINES-2,(COLS/2)-16,"HIT RETURN TO DELETE MESSAGE");
- X standend();
- X refresh();
- X inpch=getch();
- X*** odata.c Sat Mar 3 15:27:39 1990
- X--- data.c Sat Mar 3 15:28:01 1990
- X***************
- X*** 93,99 ****
- X 100,50,100,50,250,125,
- X 250,50,500,100,250,125,
- X 50, 50, 50, 75, 75,
- X! 100, 50, 150, 150, 150,
- X 175, 150, 500, 500, 1000
- X };
- X
- X--- 93,99 ----
- X 100,50,100,50,250,125,
- X 250,50,500,100,250,125,
- X 50, 50, 50, 75, 75,
- X! 75, 50, 150, 150, 150,
- X 175, 150, 500, 500, 1000
- X };
- X
- X***************
- X*** 262,268 ****
- X /* 0 0 0 0 0 0 */
- X /* a value of x means any designation is possible */
- X /* fwbcwmhpgcfshfrwdpbcpstgponpmldpllpiopshmtpbcltismasspdsgridp*/
- X! char *tg_stype="xffffttttffffffffffftxlxllttuuctcccfffxxtccmmmmmmmm$$$$$$$$$$0";
- X char *tg_value="13335157911433442331131135734567789123937571111111111111111110";
- X
- X char *tg_name[] = {
- X--- 262,268 ----
- X /* 0 0 0 0 0 0 */
- X /* a value of x means any designation is possible */
- X /* fwbcwmhpgcfshfrwdpbcpstgponpmldpllpiopshmtpbcltismasspdsgridp*/
- X! char *tg_stype="xffffttttffffffffffftxlxllttuuctcccfff?xtccmmmmmmmm$$$$$$$$$$0";
- X char *tg_value="13335157911433442331131135734567789123937571111111111111111110";
- X
- X char *tg_name[] = {
- X*** omagic.c Sat Mar 3 15:27:40 1990
- X--- magic.c Sat Mar 3 15:28:01 1990
- X***************
- X*** 628,636 ****
- X }
- X } else {
- X if (ntn[i].race==ORC)
- X! mvaddstr((*count)++,0," Wrong Race");
- X! else mvaddstr((*count)++,0," That Nation is Outside Your Influence");
- X }
- X }
- X return(done);
- X }
- X--- 628,638 ----
- X }
- X } else {
- X if (ntn[i].race==ORC)
- X! mvaddstr((*count)++,0," That Nation is Outside Your Influence");
- X! else mvaddstr((*count)++,0," Wrong Race");
- X }
- X+ refresh();
- X+ sleep(2);
- X }
- X return(done);
- X }
- X*** omain.c Sat Mar 3 15:27:41 1990
- X--- main.c Sat Mar 3 15:28:02 1990
- X***************
- X*** 61,67 ****
- X int geteuid(), getuid(), setuid();
- X register int i,j;
- X char name[NAMELTH+1],filename[FILELTH];
- X! void srand(),init_hasseen(),mapprep();
- X int getopt();
- X char passwd[PASSLTH+1];
- X long time();
- X--- 61,70 ----
- X int geteuid(), getuid(), setuid();
- X register int i,j;
- X char name[NAMELTH+1],filename[FILELTH];
- X! #ifdef __STDC__
- X! void srand();
- X! #endif
- X! void init_hasseen(),mapprep();
- X int getopt();
- X char passwd[PASSLTH+1];
- X long time();
- X***************
- X*** 1119,1125 ****
- X mvprintw(nfound2*2+count,COLS-20,"%s: %d men ",ntn[i].name,enemy);
- X else if(magic(i,THE_VOID)==TRUE)
- X mvprintw(nfound2*2+count,COLS-20,"%s: ?? men ",ntn[i].name);
- X! else mvprintw(nfound2*2+count,COLS-20,"%s: %ld men ",ntn[i].name,(enemy*(rand()%60+70)/100));
- X count++;
- X }
- X enemy=0;
- X--- 1122,1132 ----
- X mvprintw(nfound2*2+count,COLS-20,"%s: %d men ",ntn[i].name,enemy);
- X else if(magic(i,THE_VOID)==TRUE)
- X mvprintw(nfound2*2+count,COLS-20,"%s: ?? men ",ntn[i].name);
- X! else {
- X! srand(i*17+enemy+TURN*3);
- X! mvprintw(nfound2*2+count,COLS-20,"%s: %ld men ",ntn[i].name,(enemy*(rand()%60+70)/100));
- X! srand((unsigned) time((long *) 0));
- X! }
- X count++;
- X }
- X enemy=0;
- X***************
- X*** 1137,1143 ****
- X mvprintw(nfound2*2+count,COLS-20,"%s: %d ships",ntn[i].name,enemy);
- X else if(magic(i,THE_VOID)==TRUE)
- X mvprintw(nfound2*2+count,COLS-20,"%s: ?? ships",ntn[i].name);
- X! else mvprintw(nfound2*2+count,COLS-20,"%s: %ld ships",ntn[i].name,(enemy*(rand()%60+70)/100));
- X count++;
- X }
- X }
- X--- 1144,1154 ----
- X mvprintw(nfound2*2+count,COLS-20,"%s: %d ships",ntn[i].name,enemy);
- X else if(magic(i,THE_VOID)==TRUE)
- X mvprintw(nfound2*2+count,COLS-20,"%s: ?? ships",ntn[i].name);
- X! else {
- X! srand(i*17+enemy+TURN*3);
- X! mvprintw(nfound2*2+count,COLS-20,"%s: %ld ships",ntn[i].name,(enemy*(rand()%60+70)/100));
- X! srand((unsigned) time((long *) 0));
- X! }
- X count++;
- X }
- X }
- X***************
- X*** 1177,1184 ****
- X
- X if((sptr->owner==country)||(country==0)||(magic(country,NINJA)==TRUE))
- X mvprintw(LINES-9,COLS-20,"people: %6d",sptr->people);
- X! else
- X! mvprintw(LINES-9,COLS-20,"people: %6d",sptr->people*(rand()%60+70)/100);
- X clrtoeol();
- X if((sptr->owner==country)
- X ||(sptr->owner==0)
- X--- 1188,1198 ----
- X
- X if((sptr->owner==country)||(country==0)||(magic(country,NINJA)==TRUE))
- X mvprintw(LINES-9,COLS-20,"people: %6d",sptr->people);
- X! else {
- X! srand(country*17+TURN*3+sptr->people);
- X! mvprintw(LINES-9,COLS-20,"people: %6d",sptr->people*(rand()%60+70)/100);
- X! srand((unsigned) time((long *) 0));
- X! }
- X clrtoeol();
- X if((sptr->owner==country)
- X ||(sptr->owner==0)
- X*** onpc.c Sat Mar 3 15:27:42 1990
- X--- npc.c Sat Mar 3 15:28:02 1990
- X***************
- X*** 487,493 ****
- X for(armynum=1;armynum<MAXARM;armynum++) if(P_ASOLD>0){
- X /* move army back if too far out */
- X ok = 0;
- X! if (P_ASOLD < MINLEADER && P_ASOLD!=A_MILITIA) {
- X curntn->tmil += P_ASOLD;
- X }
- X for(x=(int)P_AXLOC-3;x<=(int)P_AXLOC+3;x++)
- X--- 487,493 ----
- X for(armynum=1;armynum<MAXARM;armynum++) if(P_ASOLD>0){
- X /* move army back if too far out */
- X ok = 0;
- X! if (P_ATYPE < MINLEADER && P_ASOLD!=A_MILITIA) {
- X curntn->tmil += P_ASOLD;
- X }
- X for(x=(int)P_AXLOC-3;x<=(int)P_AXLOC+3;x++)
- X***************
- X*** 562,567 ****
- X--- 562,568 ----
- X
- X /*too few soldiers on garrison*/
- X /*diff is number to change mil in cap (>0)*/
- X+ if (*(u_enmetal + (P_ATYPE%UTYPE)) > 0)
- X diff = (long) min(ideal-P_ASOLD,(int) (curntn->metals / *(u_enmetal + (P_ATYPE%UTYPE))));
- X
- X diff=(long) min((int) diff, sct[curntn->capx][curntn->capy].people/2L);
- X***************
- X*** 636,641 ****
- X--- 637,643 ----
- X &&( P_ATYPE<MINLEADER )
- X &&( P_ASOLD < TAKESECTOR )
- X &&( curntn->tgold > 0 )
- X+ &&(curntn->metals >= (TAKESECTOR+20-P_ASOLD)* *(u_enmetal + (P_ATYPE%UTYPE)))
- X &&( fort_val(&sct[P_AXLOC][P_AYLOC]) > 0)
- X &&( sct[P_AXLOC][P_AYLOC].owner == country )) {
- X #ifdef DEBUG
- X***************
- X*** 647,652 ****
- X--- 649,655 ----
- X else curntn->tgold-=(TAKESECTOR+20-P_ASOLD)*
- X *(u_encost + (P_ATYPE%UTYPE));
- X curntn->tmil += TAKESECTOR+20-P_ASOLD;
- X+ curntn->metals -= ((TAKESECTOR+20-P_ASOLD)* *(u_enmetal + (P_ATYPE%UTYPE)));
- X P_ASOLD = TAKESECTOR+20;
- X }
- X
- X***************
- X*** 1160,1165 ****
- X--- 1163,1177 ----
- X
- X if( curntn->tgold > curntn->tciv ) curntn->charity=10;
- X else curntn->charity=0;
- X+ if( (curntn->tsctrs < 20) || (curntn->score < 20) ) {
- X+ if( curntn->tax_rate < 10 )
- X+ curntn->tax_rate = 10;
- X+ } else {
- X+ curntn->tax_rate = (int)min((int)(curntn->prestige/5),(int)((curntn->popularity+curntn->terror+3*curntn->charity)/10));
- X+ curntn->tax_rate = (int)min(curntn->tax_rate,20);
- X+ if(curntn->tax_rate < 4)
- X+ curntn->tax_rate = 4;
- X+ }
- X
- X /* INTELLIGENT SECTOR REDESIGNATION */
- X /* note that only redesignate pc's if not designated yet */
- X*** otrade.c Sat Mar 3 15:27:44 1990
- X--- trade.c Sat Mar 3 15:28:03 1990
- X***************
- X*** 51,57 ****
- X #ifdef ADMIN
- X char *tradefail[NUMPRODUCTS] = { "lack of gold", "lack of food",
- X "lack of metal", "lack of jewels", "land not owned",
- X! "no available armies", "no available navies"};
- X #endif ADMIN
- X #ifdef CONQUER
- X /* Use this when you wish to bid something */
- X--- 51,58 ----
- X #ifdef ADMIN
- X char *tradefail[NUMPRODUCTS] = { "lack of gold", "lack of food",
- X "lack of metal", "lack of jewels", "land not owned",
- X! "unavailable or destroyed armies",
- X! "unavailable or destoryed navies"};
- X #endif ADMIN
- X #ifdef CONQUER
- X /* Use this when you wish to bid something */
- X***************
- X*** 145,151 ****
- X lvar2[holdint],
- X commodities[type2[holdint]]);
- X }
- X! if (count>16) {
- X standout();
- X mvaddstr(LINES-2,30,"Hit Any Key to Continue");
- X standend();
- X--- 146,152 ----
- X lvar2[holdint],
- X commodities[type2[holdint]]);
- X }
- X! if (count>LINES-8) {
- X standout();
- X mvaddstr(LINES-2,30,"Hit Any Key to Continue");
- X standend();
- X***************
- X*** 571,576 ****
- X--- 572,578 ----
- X }
- X }
- X mvprintw((*count)++,0," JUST ENTERED %c so food value is %d", entered,temp);
- X+ refresh();
- X return(temp);
- X }
- X
- X***************
- X*** 659,664 ****
- X--- 661,667 ----
- X int cntry,item,isup,extint;
- X long longval;
- X {
- X+ if (cntry == -1) return;
- X switch(item)
- X {
- X case TDGOLD:
- X***************
- X*** 722,727 ****
- X--- 725,731 ----
- X case TDARMY:
- X /* find army number for cntry2 */
- X /* give army to cntry2 */
- X+ if(ntn[cntry1].arm[extra].sold <= 0) return -1;
- X while(unitnum==(-1)&&unitcount<MAXARM) {
- X if (ntn[cntry2].arm[unitcount].sold<=0) {
- X /* give army to cntry2 */
- X***************
- X*** 743,748 ****
- X--- 747,755 ----
- X break;
- X case TDSHIP:
- X /* give navy to cntry1 */
- X+ if(!(ntn[cntry1].nvy[extra].merchant!=0
- X+ && ntn[cntry1].nvy[extra].warships!=0
- X+ && ntn[cntry1].nvy[extra].galleys!=0) ) return -1;
- X while(unitnum==(-1)&&unitcount<MAXARM){
- X if ((int)ntn[cntry2].nvy[unitcount].merchant+ntn[cntry2].nvy[unitcount].warships+ntn[cntry2].nvy[unitcount].galleys == 0) {
- X /* give navy to cntry2 */
- X***************
- X*** 787,793 ****
- X returnval=longval;
- X break;
- X case TDLAND:
- X! if (cntry2!=sct[(int)longval][extint].owner)
- X returnval=(long)tofood( &sct[(int)longval][extint],cntry1);
- X break;
- X case TDARMY:
- X--- 794,800 ----
- X returnval=longval;
- X break;
- X case TDLAND:
- X! if (cntry2 == sct[(int)longval][extint].owner)
- X returnval=(long)tofood( &sct[(int)longval][extint],cntry1);
- X break;
- X case TDARMY:
- X***************
- X*** 795,800 ****
- X--- 802,808 ----
- X returnval=armyvalue(cntry2,extint);
- X break;
- X case TDSHIP:
- X+ curntn = &ntn[cntry2];
- X if (flthold(extint)>0)
- X returnval = (long)flthold(extint);
- X break;
- X***************
- X*** 976,982 ****
- X whobuy[type1[itemnum]]=natn[itemnum];
- X } else {
- X /* return bid */
- X! takeback(whobuy[itemnum],
- X type2[type1[itemnum]],
- X lvar1[itemnum],(int)lvar2[itemnum],FALSE);
- X }
- X--- 984,990 ----
- X whobuy[type1[itemnum]]=natn[itemnum];
- X } else {
- X /* return bid */
- X! takeback(natn[itemnum],
- X type2[type1[itemnum]],
- X lvar1[itemnum],(int)lvar2[itemnum],FALSE);
- X }
- X***************
- X*** 995,1000 ****
- X--- 1003,1009 ----
- X for (count=0;count<itemnum;count++) {
- X if (deal[count]==SELL) {
- X /* adjust the displayed value */
- X+ if (type1[count] != TDLAND)
- X lvar1[count]=gettval(0,natn[count],type1[count],lvar1[count],extra[count]);
- X /* keep unsold items up for sale */
- X if(lvar1[count]>=0) fprintf(tfile,"%d %d %d %d %ld %ld %d\n", deal[count], natn[count],type1[count],type2[count],lvar1[count],lvar2[count],extra[count]);
- X***************
- X*** 1013,1018 ****
- X--- 1022,1029 ----
- X ntn[whobuy[count]].name,ntn[natn[count]].name,tradefail[type2[count]]);
- X /* place it on the list for next turn */
- X /* adjust the displayed value */
- X+ /* let land fail during trade */
- X+ if (type1[count] != TDLAND)
- X lvar1[count]=gettval(0,natn[count],type1[count],lvar1[count],extra[count]);
- X if(lvar1[count]>=0) fprintf(tfile,"%d %d %d %d %ld %ld %d\n", SELL, natn[count],type1[count],type2[count],lvar1[count],lvar2[count],extra[count]);
- X } else {
- X***************
- X*** 1026,1031 ****
- X--- 1037,1108 ----
- X }
- X }
- X fclose(tfile);
- X+ }
- X+
- X+ /* remove a nations items from the trading board */
- X+ void
- X+ fixtrade (cntry)
- X+ int cntry;
- X+ {
- X+ FILE *tfile;
- X+ int holdint, notopen=FALSE;
- X+ int type1[MAXITM], type2[MAXITM], deal[MAXITM], extra[MAXITM];
- X+ int natn[MAXITM], itemnum, getland(), gettrade(), checkland();
- X+ long lvar1[MAXITM], lvar2[MAXITM], armyvalue();
- X+ void setaside(), takeback();
- X+
- X+ /* open trading file */
- X+ if ((tfile=fopen(tradefile,"r")) == NULL ) {
- X+ notopen=TRUE;
- X+ }
- X+ itemnum = 0;
- X+
- X+ /* read in all of the data */
- X+ while (notopen==FALSE && !feof(tfile))
- X+ {
- X+ if (fscanf(tfile,"%d %d %d %d %ld %ld %d\n",&deal[itemnum],
- X+ &natn[itemnum],&type1[itemnum],&type2[itemnum],
- X+ &lvar1[itemnum],&lvar2[itemnum],&extra[itemnum]) == 7){
- X+ if (deal[itemnum]==NOSALE) {
- X+ /* remove item from sales list */
- X+ deal[type1[itemnum]]=NOSALE;
- X+ } else if (deal[itemnum]==SELL) {
- X+ itemnum++;
- X+ }
- X+ }
- X+ }
- X+ if (notopen==FALSE) fclose(tfile);
- X+
- X+ /* go through list of commodities */
- X+
- X+ for ( holdint=0; holdint<itemnum; holdint++)
- X+ {
- X+ if ( deal[holdint]==SELL )
- X+ {
- X+
- X+ if ( natn[holdint] == cntry )
- X+ {
- X+ /* remove it from market */
- X+
- X+ if ( (tfile = fopen(tradefile,"a+"))==NULL)
- X+ {
- X+ printf("Error opening file for trading");
- X+ abrt();
- X+ }
- X+
- X+ fprintf(tfile, "%d %d %d %d %ld %ld %d\n",
- X+ NOSALE, natn[holdint], holdint, 0, 0L, 0L, 0);
- X+
- X+ fclose(tfile);
- X+
- X+ takeback( natn[holdint], type1[holdint], lvar1[holdint],
- X+ extra[holdint], FALSE);
- X+
- X+ } /* natn == cntry */
- X+
- X+ } /* SELL order */
- X+
- X+ } /* loop through commodities */
- X }
- X #endif ADMIN
- X #endif TRADE
- X*** ocheck.c Sat Mar 3 15:27:39 1990
- X--- check.c Sat Mar 3 15:28:03 1990
- X***************
- X*** 18,29 ****
- X register struct s_nation *nptr;
- X register int i;
- X register int country;
- X struct army *a;
- X
- X for( country = 0; country < NTOTAL; country++ ) {
- X nptr = &ntn[country];
- X
- X! if(nptr->active == 0) continue;
- X if( nptr->metals < 0.0 ) {
- X fprintf( stderr, "file %s: line %d: nation[%d] metal = %ld\n",
- X __file__, __line__, country, nptr->metals );
- X--- 18,30 ----
- X register struct s_nation *nptr;
- X register int i;
- X register int country;
- X+ int j, k;
- X struct army *a;
- X
- X for( country = 0; country < NTOTAL; country++ ) {
- X nptr = &ntn[country];
- X
- X! if(country !=0 && nptr->active == 0) continue;
- X if( nptr->metals < 0.0 ) {
- X fprintf( stderr, "file %s: line %d: nation[%d] metal = %ld\n",
- X __file__, __line__, country, nptr->metals );
- X***************
- X*** 54,68 ****
- X __file__, __line__, country, i, a->yloc );
- X a->yloc = 0;
- X }
- X if( a->stat != ONBOARD && sct[a->xloc][a->yloc].altitude==WATER ) {
- X fprintf( stderr, "file %s: line %d: nation[%d] army[%d] loc=%d,%d (water) men=%d\n",
- X __file__,__line__,country,i,a->xloc,a->yloc,a->sold);
- X a->sold = 0;
- X }
- X! if( a->stat == ONBOARD && a->smove != 0) {
- X! /* don't echo since this is still getting */
- X! /* set some place someplace I can't find yet */
- X! a->smove = 0;
- X }
- X } /* for */
- X
- X--- 55,101 ----
- X __file__, __line__, country, i, a->yloc );
- X a->yloc = 0;
- X }
- X+ if( a->stat == ONBOARD) {
- X+ if (a->smove != 0) {
- X+ fprintf( stderr, "file %s: line %d: nation[%d] army[%d] onboard move = %d\n",
- X+ __file__, __line__, country, i, a->smove );
- X+ a->smove = 0;
- X+ }
- X+ k = 0;
- X+ for (j = 0; j < MAXNAVY; j++) {
- X+ if (nptr->nvy[j].warships == 0
- X+ && nptr->nvy[j].merchant == 0
- X+ && nptr->nvy[j].galleys == 0)
- X+ continue;
- X+ if (nptr->nvy[j].armynum == i) {
- X+ k = 1;
- X+ }
- X+ }
- X+ if (k == 0) {
- X+ fprintf(stderr, "files %s: line %d: nation[%d] army[%d] onboard nothing\n",
- X+ __file__,__line__,country,i);
- X+ a->stat = DEFEND;
- X+ }
- X+ }
- X if( a->stat != ONBOARD && sct[a->xloc][a->yloc].altitude==WATER ) {
- X fprintf( stderr, "file %s: line %d: nation[%d] army[%d] loc=%d,%d (water) men=%d\n",
- X __file__,__line__,country,i,a->xloc,a->yloc,a->sold);
- X a->sold = 0;
- X }
- X! } /* for */
- X!
- X! for( i = 0; i < MAXNAVY; i++ ) {
- X! if (nptr->nvy[i].warships == 0
- X! && nptr->nvy[i].merchant == 0
- X! && nptr->nvy[i].galleys == 0)
- X! continue;
- X! if (nptr->nvy[i].armynum != MAXARM) {
- X! a = &(nptr->arm[nptr->nvy[i].armynum]);
- X! if (a->sold == 0 || a->stat != ONBOARD) {
- X! fprintf(stderr, "file %s: line %d: nation[%d] navy[%d] carrying invalid troop\n",
- X! __file__,__line__,country,i);
- X! nptr->nvy[i].armynum = MAXARM;
- X! }
- X }
- X } /* for */
- X
- X*** onavy.c Sat Mar 3 15:27:42 1990
- X--- navy.c Sat Mar 3 15:28:03 1990
- X***************
- X*** 423,430 ****
- X }
- X P_ASTAT=DEFEND;
- X P_NARMY=MAXARM;
- X! if ((sct[XREAL][YREAL].designation!=DCITY
- X! && sct[XREAL][YREAL].designation!=DCAPITOL)
- X || P_NMOVE < N_CITYCOST) {
- X P_NMOVE=0;
- X } else {
- X--- 423,433 ----
- X }
- X P_ASTAT=DEFEND;
- X P_NARMY=MAXARM;
- X! if (!((sct[XREAL][YREAL].designation==DCITY
- X! || sct[XREAL][YREAL].designation==DCAPITOL)
- X! && (sct[XREAL][YREAL].owner==country
- X! || (!ntn[sct[XREAL][YREAL].owner].dstatus[country]!=UNMET
- X! && ntn[sct[XREAL][YREAL].owner].dstatus[country]<=NEUTRAL)))
- X || P_NMOVE < N_CITYCOST) {
- X P_NMOVE=0;
- X } else {
- X***************
- X*** 495,502 ****
- X P_ASTAT=ONBOARD;
- X P_AMOVE=0;
- X P_NARMY=armynum;
- X! if ((sct[XREAL][YREAL].designation!=DCITY
- X! && sct[XREAL][YREAL].designation!=DCAPITOL)
- X || P_NMOVE < N_CITYCOST) {
- X P_NMOVE=0;
- X } else {
- X--- 498,508 ----
- X P_ASTAT=ONBOARD;
- X P_AMOVE=0;
- X P_NARMY=armynum;
- X! if (!((sct[XREAL][YREAL].designation==DCITY
- X! || sct[XREAL][YREAL].designation==DCAPITOL)
- X! && (sct[XREAL][YREAL].owner==country
- X! || (!ntn[sct[XREAL][YREAL].owner].dstatus[country]!=UNMET
- X! && ntn[sct[XREAL][YREAL].owner].dstatus[country]<=NEUTRAL)))
- X || P_NMOVE < N_CITYCOST) {
- X P_NMOVE=0;
- X } else {
- X*** otxt3 Sat Mar 3 15:27:44 1990
- X--- txt3 Sat Mar 3 15:28:04 1990
- X***************
- X*** 1,25 ****
- X! MAGIC POWERS
- X
- X! Magic powers differentiate your nation from all the other nations in the
- X! world. There are three types of powers - truly MAGICAL powers, which
- X! usually involve summoning or spell use, CIVILIAN powers, which are related
- X! to civilization and trade, and MILITARY powers, which measure your ability
- X! to make war.
- X
- X! All nations start with at least one power (based on race or class) and can
- X! purchase additional powers by expending jewels. On the Magic Screen ('M'),
- X! if you have enough jewels, you will be asked if you wish to buy a magic
- X power.
- X!
- X! The magic screen also permits you to see what powers you have, and to
- X! takeover ORC nations if you are an ORC nation with the appropriate powers.
- X END
- X! HOW TO GET MAGIC
- X
- X! Magic powers cost jewels to obtain; the chance to obtain a power is based on
- X! your nations magic ability. The formulae for this is to take two to the
- X! power of the sum of the number of powers you have from that type and half
- X! the number of other powers times your base value:
- X
- X jewel cost for civilian power = Base * 2**( #mgk/2 + #civ + #mil/2 )
- X
- X--- 1,25 ----
- X! MAGIC POWERS
- X
- X! Magic powers differentiate your nation from all the other nations in the
- X! world. There are three types of powers - truly MAGICAL powers, which usually
- X! involve summoning or spell use, CIVILIAN powers, which are related to civili-
- X! zation and trade, and MILITARY powers, which measure your ability to make
- X! war.
- X
- X! All nations start with at least one power (based on race or class) and can
- X! purchase additional powers by expending jewels. On the Magic Screen ('M'),
- X! if you have enough jewels, you will be asked if you wish to buy a magic
- X power.
- X!
- X! The magic screen also permits you to see what powers you have, and to take-
- X! over ORC nations if you are an ORC nation with the appropriate powers.
- X END
- X! HOW TO GET MAGIC
- X
- X! Magic powers cost jewels to obtain; the cost to obtain a power is based on
- X! your nations magic ability. The formulae for this is to take two to the
- X! power of the sum of the number of powers you have from that type and half the
- X! number of other powers times your base value:
- X
- X jewel cost for civilian power = Base * 2**( #mgk/2 + #civ + #mil/2 )
- X
- X***************
- X*** 102,145 ****
- X Enhance Attack -- 30% increase in attack at a cost of 1 spell pt / 300 men
- X Enhance Defense -- 30% increase in defense at a cost of 1 spell pt / 300 men
- X
- X! All of the above spells except summoning have an effect area of one army
- X! unit and a duration of one turn. Flight and the Combat Enhancements each
- X! cause the unit to lose one movement point due to the change in status.
- X END
- X! SUMMONED MONSTERS
- X
- X! A monster unit represents one monster, but is the equivalent in combat of an
- X army of the given number of men. When summoned, they appear in your Capitol,
- X! and are yours to command until you disband them or can not afford to pay
- X! their per/turn jewel cost *and* 5x that cost in gold. Monsters may be
- X! wounded in combat as can normal army units. Wounded monsters have a percent
- X chance of dying based on the percent damage taken (a dragon (1000 men) taking
- X! 200 equivalent men of damage has a 20% chance of dying). Next turn, however
- X! its strength will be fully restored (1000 men again). A number of the
- X! monsters will also have the ability of flight.
- X
- X! Spell points can accumulate from turn to turn, but there is a 25% chance
- X! that half your unused spell points disappear each turn... this gives you
- X! some incentive to use them.
- X END
- X SUMMONED MONSTER TYPES
- X
- X spell combat jewels power
- X points bonus move men turn prerequisites
- X! SPIRIT 2 +0 x1 50 1000
- X! ASSASSIN 2 +20 x1 50 400 NINJA
- X! EFREET 2 +10 x1.5 50 400 DERVISH
- X! GARGOYLE 2 +10 x1 75 450 MI_MONST
- X! WRAITH 2 +10 x1 75 450 VAMPIRE
- X! HERO 2 +0 x1 100 200 WARRIOR
- X! CENTAUR 2 +10 x1.5 50 200 CAVALRY
- X! GIANT 5 +0 x1 150 2100
- X! SUPERHERO 5 +15 x1 150 450 WARLORD
- X! MUMMY 5 +15 x1 150 1000 VAMPIRE
- X! ELEMENTAL 5 +5 x1.5 175 1900 SORCERER
- X! MINOTAUR 5 +20 x1 150 2100 DESTROYER
- X! DEMON 10 +50 x1 500 6000 DESTROYER
- X! BALROG 10 +40 x1.5 500 6000 WIZARD & VAMPIRE
- X! DRAGON 15 +50 x2 1000 10000 MA_MONST & WIZARD
- X END
- X DONE
- X--- 102,162 ----
- X Enhance Attack -- 30% increase in attack at a cost of 1 spell pt / 300 men
- X Enhance Defense -- 30% increase in defense at a cost of 1 spell pt / 300 men
- X
- X! All of the above spells except summoning have an effect area of one army unit
- X! and a duration of one turn. Flight and the Combat Enhancements each cause
- X! the unit to lose one movement point due to the change in status.
- X END
- X! SUMMONED MONSTERS
- X
- X! A monster unit represents one monster, but is the equivalent in combat of an
- X army of the given number of men. When summoned, they appear in your Capitol,
- X! and are yours to command until you disband them or can not afford to pay
- X! their per/turn jewel cost *and* 5x that cost in gold. Monsters may be
- X! wounded in combat as can normal army units. Wounded monsters have a percent
- X chance of dying based on the percent damage taken (a dragon (1000 men) taking
- X! 200 equivalent men of damage has a 20% chance of dying). Next turn, however
- X! its strength will be fully restored (1000 men again). A number of the mon-
- X! sters will also have the ability of flight.
- X
- X! Spell points can accumulate from turn to turn, but there is a 25% chance that
- X! half your unused spell points disappear each turn.... This gives you some
- X! incentive to use them.
- X END
- X SUMMONED MONSTER TYPES
- X
- X spell combat jewels power
- X points bonus move men turn prerequisites
- X! Spirit 2 +0 x1 50 1000
- X! Assasin 2 +20 x1 50 400 NINJA
- X! Efreet 2 +10 x1.5 50 400 DERVISH
- X! Gargoyl 2 +10 x1 75 450 MI_MONST
- X! Wraith 2 +10 x1 75 450 VAMPIRE
- X! Hero 2 +0 x1 75 200 WARLORD
- X! Centaur 2 +10 x1.5 50 200 CAVALRY
- X! Giant 5 +0 x1 150 2100
- X! Suphero 5 +15 x1 150 450 WARRIOR
- X! Mummy 5 +15 x1 150 1000 VAMPIRE
- X! Elmentl 5 +5 x1.5 175 1900 SORCERER
- X! Mintaur 5 +20 x1 150 2100 DESTROYER
- X! Daemon 10 +50 x1 500 6000 DESTROYER
- X! Balrog 10 +40 x1.5 500 6000 WIZARD & VAMPIRE
- X! Dragon 15 +50 x2 1000 10000 MA_MONST & WIZARD
- X! END
- X! FURTHER RESTRICTIONS ON ACQUIRING MAGIC
- X!
- X! Note: This applies only to powers acquired during the course of the game and
- X! not to innate powers of nations. Further, extra random powers bought by new
- X! nations are considered to be bought on their first turn as their first
- X! action.
- X!
- X! God only: KNOWALL
- X! Orc only: MI_MONST, AV_MONST, MA_MONST, BREEDER
- X! PC only: ARMOR, AVIAN, SAPPER,
- X! DEMOCRACY, NINJA, ROADS, SAILOR, SLAVER,
- X! SUMMON, WYZARD, SORCEROR
- X! Forbidden to Dwarves: SUMMON, WYZARD, SORCEROR
- X! Forbidden to Elves: DESTROYER, VAMPIRE, MINER
- X! Forbidden to Orcs: RELIGION, CAVALRY
- X! Forbidden to NPC's: CAVALRY
- X END
- X DONE
- X*** ospew.c Sat Mar 3 15:27:43 1990
- X--- spew.c Sat Mar 3 15:28:05 1990
- X***************
- X*** 95,106 ****
- X int n;
- X FILE *fp;
- X {
- X! char *fname;
- X char main_class[20];
- X int i;
- X HowMany = n;
- X
- X! fname = DEFFILE;
- X InFile = fopen( fname, "r" );
- X if( InFile == NULL ){
- X fprintf( stderr, "Can\'t open: %s\n", fname );
- X--- 95,107 ----
- X int n;
- X FILE *fp;
- X {
- X! char fname[BIGLTH];
- X char main_class[20];
- X int i;
- X HowMany = n;
- X
- X! /* read in only the rules file in defaultdir */
- X! sprintf(fname, "%s/%s", DEFAULTDIR, DEFFILE);
- X InFile = fopen( fname, "r" );
- X if( InFile == NULL ){
- X fprintf( stderr, "Can\'t open: %s\n", fname );
- X
- END_OF_FILE
- if test 62540 -ne `wc -c <'patches09'`; then
- echo shar: \"'patches09'\" unpacked with wrong size!
- fi
- # end of 'patches09'
- fi
- echo shar: End of shell archive.
- exit 0
-